fix: Ensure protocol slashes are preserved in getSanitizedPath
#33978
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
When using
WebClientwithUriBuilderto construct URIs, I encountered a problem where the protocol's double slashes (://) were incorrectly reduced to a single slash (:/).As a result, malformed URIs such as http:
/jsonplaceholder.typicode.com/users were generated, causing WebClient to throw aHost is not specifiedexception.This prevented the request from reaching the server and resulted in a
500 error.This behavior occurred because the
getSanitizedPathmethod in theUriComponentsBuilder classattempted to remove redundant slashes, but inadvertently changed the protocol structure by failing to preserve the://delimiter.Error Sample
Changes
Test
getSanitizedPathmethod using reflection.Example Test Case
Input:
http://example.com//path/to//resourceOutput:
http://example.com/path/to/resourceInput:
https://example.com//pathOutput:
https://example.com/pathInput:
example.com//pathOutput:
example.com/path